trait is required
Documentation for trait is required assembled from the following types:
language documentation Type system
From Type system
(Type system) trait is required
Defined as:
multi sub trait_mod:<is>(Attribute , :!)
Marks a class or roles attribute as required. If the attribute is not initialized at object construction time throws X::Attribute::Required.
say Correct.new(attr => 42);# OUTPUT: «Correct.new(attr => 42)»C.new;CATCH# OUTPUT: «X::Attribute::Required => The attribute '$!attr' is required, but you did not provide a value for it.»
class Attribute
From Attribute
(Attribute) trait is required
multi sub trait_mod:<is> (Attribute , :!)
Marks an attribute as being required. If a value is not provided during object construction, an exception is thrown.
;Foo.new(bar => 42); # worksFoo.new(baz => 42);CATCH ;# OUTPUT: «X::Attribute::Required: The attribute '$!bar' is required, but you did not provide a value for it.»
is required doesn't just affect the default constructor, it checks for the attribute at a lower level, so it will work for custom constructors written using bless.